Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/backend/database/telemetry.py 9f71f3420c18d5800afb493b723c328d23c7ea12 (9f71f342) Text, 4.70 KB

T8b949e# SPDX-License-Identifier: 0BSD

Tff7b72import T7ee787json
Tff7b72from T7ee787datetime Tff7b72import Te6edf3UTCTb4b4b4, Te6edf3datetime

Tff7b72from T7ee787.T7ee787provider Tff7b72import Te6edf3DatabaseProvider


Tff7b72class T56d364TelemetryDAOTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3providerTb4b4b4: Te6edf3DatabaseProviderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffprovider Tff7b72= Te6edf3provider

Tff7b72def Td2a8ffupsert_telemetryTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3destination_hashTb4b4b4,
Te6edf3timestampTb4b4b4,
Te6edf3dataTb4b4b4,
Te6edf3received_fromTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3physical_linkTff7b72=Tff7b72NoneTb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3now Tff7b72= Te6edf3datetimeTff7b72.Td2a8ffnowTb4b4b4(Te6edf3UTCTb4b4b4)Tff7b72.Td2a8ffisoformatTb4b4b4(Tb4b4b4)

T8b949e# If physical_link is a dict, convert to json
Tff7b72if Tffa657isinstanceTb4b4b4(Te6edf3physical_linkTb4b4b4, Tffa657dictTb4b4b4)Tb4b4b4:
Te6edf3physical_link Tff7b72= Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3physical_linkTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
T8b949e"""
INSERT INTO lxmf_telemetry (destination_hash, timestamp, data, received_from, physical_link, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?)
ON CONFLICT(destination_hash, timestamp) DO UPDATE SET
data = EXCLUDED.data,
received_from = EXCLUDED.received_from,
physical_link = EXCLUDED.physical_link,
updated_at = EXCLUDED.updated_at
"""Tb4b4b4,
Tb4b4b4(Te6edf3destination_hashTb4b4b4, Te6edf3timestampTb4b4b4, Te6edf3dataTb4b4b4, Te6edf3received_fromTb4b4b4, Te6edf3physical_linkTb4b4b4, Te6edf3nowTb4b4b4, Te6edf3nowTb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffget_latest_telemetryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3destination_hashTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM lxmf_telemetry WHERE destination_hash = ? ORDER BY timestamp DESC LIMIT 1Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3destination_hashTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffget_telemetry_historyTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3destination_hashTb4b4b4, Te6edf3limitTff7b72=T79c0ff100Tb4b4b4, Te6edf3offsetTff7b72=T79c0ff0Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM lxmf_telemetry WHERE destination_hash = ? ORDER BY timestamp DESC LIMIT ? OFFSET ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3destination_hashTb4b4b4, Te6edf3limitTb4b4b4, Te6edf3offsetTb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffget_all_latest_telemetryTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# Get the latest telemetry entry for every unique destination_hash
Te6edf3query Tff7b72= Ta5d6ff"""
Ta5d6ff SELECT t1.* FROM lxmf_telemetry t1
Ta5d6ff JOIN (
Ta5d6ff SELECT destination_hash, MAX(timestamp) as max_ts
Ta5d6ff FROM lxmf_telemetry
Ta5d6ff GROUP BY destination_hash
Ta5d6ff ) t2 ON t1.destination_hash = t2.destination_hash AND t1.timestamp = t2.max_ts
Ta5d6ff ORDER BY t1.timestamp DESC
Ta5d6ff Ta5d6ff"""
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(Te6edf3queryTb4b4b4)

Tff7b72def Td2a8ffdelete_telemetry_for_destinationTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3destination_hashTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
Ta5d6ff"Ta5d6ffDELETE FROM lxmf_telemetry WHERE destination_hash = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3destination_hashTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffis_trackingTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3destination_hashTb4b4b4)Tb4b4b4:
Te6edf3row Tff7b72= Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT is_tracking FROM telemetry_tracking WHERE destination_hash = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3destination_hashTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tffa657boolTb4b4b4(Te6edf3rowTb4b4b4[Ta5d6ff"Ta5d6ffis_trackingTa5d6ff"Tb4b4b4]Tb4b4b4) Tff7b72if Te6edf3row Tff7b72else Tff7b72False

Tff7b72def Td2a8ffget_tracking_statesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3destination_hashesTb4b4b4)Tb4b4b4:
T8b949e"""Batch lookup of tracking flags for conversation list rows."""
Tff7b72if Tff7b72not Te6edf3destination_hashesTb4b4b4:
Tff7b72return Tb4b4b4{Tb4b4b4}
Te6edf3unique Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3seen Tff7b72= Tffa657setTb4b4b4(Tb4b4b4)
Tff7b72for Te6edf3destination_hash Tff7b72in Te6edf3destination_hashesTb4b4b4:
Tff7b72if Tff7b72not Te6edf3destination_hash Tff7b72or Te6edf3destination_hash Tff7b72in Te6edf3seenTb4b4b4:
Tff7b72continue
Te6edf3seenTff7b72.Td2a8ffaddTb4b4b4(Te6edf3destination_hashTb4b4b4)
Te6edf3uniqueTff7b72.Td2a8ffappendTb4b4b4(Te6edf3destination_hashTb4b4b4)
Tff7b72if Tff7b72not Te6edf3uniqueTb4b4b4:
Tff7b72return Tb4b4b4{Tb4b4b4}
Te6edf3placeholders Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ff?Ta5d6ff"Tb4b4b4] Tff7b72* Tffa657lenTb4b4b4(Te6edf3uniqueTb4b4b4)Tb4b4b4)
Te6edf3rows Tff7b72= Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffSELECT destination_hash, is_tracking FROM telemetry_tracking Ta5d6ff"
Ta5d6fffTa5d6ff"Ta5d6ffWHERE destination_hash IN (Tffd700{Te6edf3placeholdersTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4,
Tffa657tupleTb4b4b4(Te6edf3uniqueTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tb4b4b4{Te6edf3rowTb4b4b4[Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4]Tb4b4b4: Tffa657boolTb4b4b4(Te6edf3rowTb4b4b4[Ta5d6ff"Ta5d6ffis_trackingTa5d6ff"Tb4b4b4]Tb4b4b4) Tff7b72for Te6edf3row Tff7b72in Te6edf3rowsTb4b4b4}

Tff7b72def Td2a8fftoggle_trackingTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3destination_hashTb4b4b4, Te6edf3is_trackingTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3is_tracking Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3is_tracking Tff7b72= Tff7b72not Tff7b72selfTff7b72.Td2a8ffis_trackingTb4b4b4(Te6edf3destination_hashTb4b4b4)

Te6edf3now Tff7b72= Te6edf3datetimeTff7b72.Td2a8ffnowTb4b4b4(Te6edf3UTCTb4b4b4)Tff7b72.Td2a8ffisoformatTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
T8b949e"""
INSERT INTO telemetry_tracking (destination_hash, is_tracking, updated_at)
VALUES (?, ?, ?)
ON CONFLICT(destination_hash) DO UPDATE SET
is_tracking = EXCLUDED.is_tracking,
updated_at = EXCLUDED.updated_at
"""Tb4b4b4,
Tb4b4b4(Te6edf3destination_hashTb4b4b4, Tffa657intTb4b4b4(Te6edf3is_trackingTb4b4b4)Tb4b4b4, Te6edf3nowTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Te6edf3is_tracking

Tff7b72def Td2a8ffget_tracked_peersTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
Ta5d6ff"Ta5d6ffSELECT * FROM telemetry_tracking WHERE is_tracking = 1Ta5d6ff"Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffupdate_last_request_atTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3destination_hashTb4b4b4, Te6edf3timestampTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3timestamp Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72import T7ee787time

Te6edf3timestamp Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
Ta5d6ff"Ta5d6ffUPDATE telemetry_tracking SET last_request_at = ? WHERE destination_hash = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3timestampTb4b4b4, Te6edf3destination_hashTb4b4b4)Tb4b4b4,
Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────